package logik;

import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import connectionPool.PoolException;

import sql.SQLs;

/**
 * Servlet implementation class AuswertungErzeugen
 */
@WebServlet("/AuswertungErzeugen")
public class AuswertungErzeugen extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public AuswertungErzeugen() {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		HttpSession session = request.getSession();
		ResultSet rs = null;
		int stoff = 0;
		int umfang = 0;
		int unterlagen = 0;
		int vermittlung = 0;
		int betreuung = 0;
		int z_stoff = 0;
		int z_umfang = 0;
		int z_unterlagen = 0;
		int z_vermittlung = 0;
		int z_betreuung = 0;
		
		try {
			rs = SQLs
					.auswaehlen(
							"Von, Bis, Modul, SehrGut, Gut, genuegend, ungenuegend, FK_Bezeichnung, durchfuehrungID",
							"durchfuehrung, kurs, teilnahme, feedback, klickfeedback",
							"`durchfuehrung`.`durchfuehrungID` = "
									+ session.getAttribute("modul")
									+ " AND `durchfuehrung`.`FK_Kurs` = `kurs`.`KursID`"
									+ " AND `durchfuehrung`.`durchfuehrungID` = `teilnahme`.`FK_Durchfuehrung`"
									+ " AND `teilnahme`.`TeilnahmeID` = `feedback`.`FK_Teilnahme`"
									+ " AND `feedback`.`FeedbackID` = `klickfeedback`.`FK_Feedback`");
		while(rs.next()){
			if(rs.getString("FK_Bezeichnung").equals("3")){
				stoff = stoff + wert(rs);
				z_stoff ++;
			}
			if(rs.getString("FK_Bezeichnung").equals("2")){
				umfang = umfang + wert(rs);
				z_umfang ++;
			}
			if(rs.getString("FK_Bezeichnung").equals("4")){
				unterlagen = unterlagen + wert(rs);
				z_unterlagen ++;
			}
			if(rs.getString("FK_Bezeichnung").equals("5")){
				vermittlung = vermittlung + wert(rs);
				z_vermittlung ++;
			}
			if(rs.getString("FK_Bezeichnung").equals("6")){
				betreuung = betreuung + wert(rs);
				z_betreuung ++;
			}
		}
		rs.first();
		stoff = stoff / z_stoff;
		umfang = umfang / z_umfang;
		unterlagen = unterlagen / z_unterlagen;
		vermittlung = vermittlung / z_vermittlung;
		betreuung = betreuung / z_betreuung;
		SQLs.insertIntoAuswertung(rs.getString("Modul"), rs.getString("von"), rs.getString("bis"), stoff, umfang, unterlagen, vermittlung, betreuung, rs.getString("durchfuehrungID"));
		response.sendRedirect("/SVNFeedbackTool/Meldung3.jsp");
		} catch (PoolException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	private int wert(ResultSet rs){
		int zahl = 0;
		try {
			if(rs.getString("SehrGut").equals("1")){
				zahl = 100;
			}
			if(rs.getString("Gut").equals("1")){
				zahl = 67;
			}
			if(rs.getString("genuegend").equals("1")){
				zahl = 33;
			}
			if(rs.getString("ungenuegend").equals("1")){
				zahl = 0;
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		return zahl;
	}

}
